package util

import (
	"os"
	"io/ioutil"
	"fmt"
	"strconv"
)

// 判断文件夹是否存在




//加载文件夹结构
func ParseDir(ff string) []map[string]interface{} {
	var result []map[string]interface{}
	files, _ := ioutil.ReadDir(ff)
	for _, f := range files {

		out := make(map[string]interface{})
		fmt.Println(f.Name())

		if f.IsDir() {
			out["text"] = f.Name()
			out["children"] = ParseDir(ff + "/" + f.Name())

		} else {
			out["text"] = f.Name()
			out["mdtime"] = f.ModTime().Format("2006-01-02 15:04:05")
			out["fsize"] = strconv.FormatInt(f.Size(),10) + "B"
			out["path"] = ff + "/" +f.Name()
			out["icon"] = "fa fa-file-text-o"

		}
		result = append(result,out)
	}
	return result
}

func CleanDir(p string)(err error) {
	rd, err := ioutil.ReadDir(p)
	for _, fi := range rd {
		fmt.Println(fi.Name())

			err = os.RemoveAll(p + "/" + fi.Name())

	}
	return
}

func ValidUTF8(buf []byte) bool{
	nBytes := 0
	for i:= 0;i<len(buf);i++{
		if nBytes == 0{
			if (buf[i] & 0x80) != 0 {  //与操作之后不为0，说明首位为1
				for (buf[i] & 0x80) != 0 {
					buf[i] <<= 1 //左移一位
					nBytes++ //记录字符共占几个字节
				}

				if nBytes < 2 || nBytes > 6 { //因为UTF8编码单字符最多不超过6个字节
					return false
				}

				nBytes-- //减掉首字节的一个计数
			}
		}else{ //处理多字节字符
			if buf[i] & 0xc0 != 0x80{ //判断多字节后面的字节是否是10开头
				return false
			}
			nBytes--
		}
	}
	return nBytes == 0
}


